﻿//《C语言从入门到精通》P128
// 第 5 章 数  组
// 5.1 一维数组
// 03、判断一个数是否在数组中【部分原创】

#include<stdio.h>

int main()
{
	int i;
	int n;
	int m = 10;			// m 需要赋初始值（只要不为下标的数字即可），否则最后的条件判断可能错误
	int a[10] = { 1, 2, 3, 4, 5, 6, 8, 8, 8, 10 };
	int signal = 0;		// （方法一）找到之后做标记，默认为 0，找到为 1

lab1:printf("【方法一】输入你想查找的数：\n");
	scanf_s("%d", &n);

// 方法一（原创）：
	for (i = 0; i < 10; i++)
	{
		if (n == a[i])
		{
			printf("【方法一】已找到 a[%d] = %d \n", i, a[i]);
			signal = 1;
		}
		else
		{
			continue;
		}
	}
	if (signal == 0)
	{
		printf("【方法一】没有查找到 %d ！请重新输入：\n\n", n);
		goto lab1;
	}
	printf("\n");
	// 方法一可以将每一个找到的元素输出


// 方法二（教材）：
lab2:printf("\n【方法二】输入你想查找的数：\n");
	scanf_s("%d", &n);

	for (i = 0; i < 10; i++)
	{
		if (n == a[i])
		{
			m = i;		// 记录下标
		}
	}
	if (m >= 0 && m <= 9)	// 需要保证下标在a[0]~a[9]之间
	{
		printf("【方法二】已找到数字 a[%d] = %d \n", m, a[m]);
	}
	else
	{
		printf("【方法二】没有查找到 %d ！请重新输入：\n\n", n);
		goto lab2;
	}

	// 方法二只能告诉你数组中有没有这个数，但是至于有几个元素等于该数，并不能告诉你
	//（查询数字“8”会发现，本例中输出的实际上是最后一个找到的元素）

	return 0;
}
